Pantograph of Sylvester

Either drag the blue point to move the mechanism or give the "Speed" slider (if visible) a non-zero value.  Note that you may need to Right-click on the blue point and select "Animation on" to reset it if it does not respond to the "Speed" slider at first.

Path

Button change

Hide trace

Clear trace

Trace off

ZoomIn[-10.56,-2.71,9.94,10.89]

Screen

set

Locus 1

Scale Property

P_1 is the movable point

Angles

Angle Property

For no change in scale we must have:

α = 90° - \frac{1}{2}\beta

Current values give:

I_1 = (8.5828372101054, 0.0911670993849576)
H_1 = (7.988359433650757, 5.066007439189588)
G_1 = (8.740449606127228, 3.1351984911369284)
F_1 = (9.405995857375778, 3.1351984911369284)
E_1 = (11.211054748115398, 4.909565919069943)
D_1 = (10.647865275684683, 0.059878795361028914)
B_1 = (12.212280476881116, -0.7536171092611093)
A_1 = (12.212280476881116, 6.004656559907436)
Z = (10.115964107277899, 6.004656559907436)
L = (8.895720250344686, 4.127358318471729)
K = (8.801855338272901, 5.785638431739936)
J = (7.2061518330525445, 5.785638431739936)
I = (7.2061518330525445, -0.6910405012132519)
poly1, i_2, j_1, k_1, l_1, z, a_2, b_2, d_2, e_2, f_2, g_2, h_2, i_3 = Polygon(I, J, K, L, Z, A_1, B_1, D_1, E_1, F_1, G_1, H_1, I_1)
O = Intersect(xAxis, yAxis)
OB = 10 (slider from 0 to 20, step 0.1)
OD = 4.6 (slider from 0 to 20, step 0.1)
P = Point(poly1)
e = Circle(P, OB)
j = Line(O, P)
s = false
G = Intersect(yAxis, xAxis)
H = Intersect(yAxis, xAxis)
Q = Intersect(yAxis, xAxis)
h = false
g = false
u = false
b_1 = Line(O, P)
J_1 = (11.078578446721579, 7.928992020266834)
K_1 = (10.856729696305395, 4.625910625181438)
L_1 = (14.751407759167288, 4.625910625181438)
o = false
a = Segment(O, P)
α = 1.2217304763960306 rad (slider from 0 to 90*°, step 0.1*°)
β = 0.6981317007977318 rad (slider from 0 to 180*°, step 0.1*°)
A_2 = Point(a)
c = Circle(A_2, OB)
d = Circle(P, OD)
B = Intersect(c, d, 2)
b = Segment(P, B)
C' = Rotate(B, -α, P)
γ = Angle(C', P, B)
f = Ray(P, C')
D_2 = Rotate(P, β, B)
δ = Angle(P, B, D_2)
i = Ray(B, D_2)
C = Intersect(f, i)
l = Segment(P, C)
m = Segment(C, B)
n = Line(C, a)
p = Line(A_2, l)
d_1 = Segment(A_2, B)
q = Line(C, d_1)
r = Line(A_2, m)
D = Intersect(r, q)
t = Segment(D, A_2)
a_1 = Segment(D, C)
F' = Rotate(D, -α, C)
ε = Angle(F', C, D)
c_1 = Ray(C, F')
E' = Rotate(C, β, D)
ζ = Angle(C, D, E')
e_1 = Ray(D, E')
P' = Intersect(c_1, e_1)
f_1 = Segment(D, P')
g_1 = Segment(P', C)
loc13 = Locus(P', P)
E = Intersect(t, f_1)
F = Intersect(d_1, m)
N = Intersect(a_1, m)
O_1 = Intersect(f_1, g_1)
P_2 = Intersect(l, b)
k = Segment(P, O)
R = Point(k)
h_1 = Segment(R, P')
η = Angle(P, R, P')
v = false
Speed = 0 (slider from -5 to 5, step 0.1)
OP = Distance(O, P)
OP' = Distance(O, P')
SF: OP' / OP
text3: "$ \frac{OP'}{OP} =  \frac{" + (LaTeX[OP']) + "}{" + (LaTeX[OP]) + "} = " + (LaTeX[SF]) + "$"
poly2, c_2, d_3, p' = Polygon(D, P', C)
A = Intersect(p', d_3)
poly3, b_3, a_3, p_1 = Polygon(A, P, B)
w = false
lhs: α
rhs: 90° - 0.5 * β
text7: "\begin{array}{} \;\;\;\;\;\;\;\;\;\;  \alpha = " + (LaTeX[lhs]) + "   \\ 90° - \frac{1}{2}\beta = " + (LaTeX[rhs]) + " \end{array} "
M = Intersect(f_1, g_1)